/**
 * Valida si existen variantes de menu repetidas
 * @author Mauricio Chamorro <mrchamorro@utn.edu.ec>
 * @returns {Boolean}
 */
function validadorVariantesMenu() {
    var variantesMenu = [];
    var moneda;
    ($('#cuerpoTableSeleccionado tr [variante=variante]')).each(function(index) {
        variantesMenu.push($(this).val());
    });
    var auxLength = variantesMenu.length;
    if (auxLength !== unique(variantesMenu).length) {
        moneda = false;
    } else {
        moneda = true;
    }
    return moneda;
}

/**
 * Valida que la cantidad de alimentos sea igual a la cantidad de variantes de menu
 * @author Mauricio Chamorro <mrchamorro@utn.edu.ec>
 * @returns {Boolean}
 */
function validadorVariantesCompletas() {
    var cantidadAlimentos = $('#cuerpoTableSeleccionado tr').size();
    if (cantidadVariantesMenu != cantidadAlimentos) {
        return false;
    } else {
        return true;
    }
}

/**
 * Metodo que busca ids de alimentos repetidos en el listado de alimentos ingresados
 * @author Mauricio Chamorro <mrchamorro@utn.edu.ec>
 * @param {int} ingresa : id del alimento
 * @returns {rangosNutrientes|Array|aux|Boolean}
 */
function validadorElementosRepetidos(ingresa) {
    aux = true;
    listaActual = listadoAlimentosCreados(true);
    $.each(listaActual, function(key2, value2) {
        if (value2 == ingresa) {
            aux = false;
        }
    });
    return aux;
}

/**
 * Muestra alertas sobre los limites para los macronutrientes y cambia los 
 * valores por la adecuacion minimo o maximo en donde para los macronutrientes sera +-5%
 * y para los micronutrientes sera +-10%;
 * @author Mauricio Chamorro <mrchamorro@utn.edu.ec>
 * @param {float} valMax rango maximo del nutriente para ese tiempo de comida y edad
 * @param {float} valMin rango minimo del nutriente para ese tiempo de comida y edad
 * @param {float} value (g) cantidad actual de los alimentos del valor nutricional
 * @param {string} key nombre del valor nutricional
 * @returns {undefined}
 */
function alertasValoreNutricionales(valMax, valMin, value, key) {
    var retorno = [];
    indicador = '';
    if (key == "proteinas_g" || key == 'grasa_total_g' ||
            key == 'carbohidratos_g' ||
            key == "acidos_grasos_saturados_g" ||
            key == "acidos_grasos_poliinsaturad_g" ||
            key == "acidos_grasos_monoinsat_g") {

        var porcentajeMax = ((valMax * 105) / 100).toFixed(2); //valor de adecuacion maxima (kcal)
        var porcentajeMin = ((valMin * 95) / 100).toFixed(2);// valor de adeacuacion minima (kcal)

        if (key == 'grasa_total_g' ||
                key == "acidos_grasos_saturados_g" ||
                key == "acidos_grasos_poliinsaturad_g" ||
                key == "acidos_grasos_monoinsat_g") { // transforma de g a kcal los 3 nutrientes
            value = (value * 9).toFixed(2);
            porcentajeMax = (porcentajeMax * 9).toFixed(2);
            porcentajeMin = (porcentajeMin * 9).toFixed(2);
        }
        else {
            value = (value * 4).toFixed(2);
            porcentajeMax = (porcentajeMax * 4).toFixed(2);
            porcentajeMin = (porcentajeMin * 4).toFixed(2);
        }


        if (Number(value) > Number(porcentajeMax)) { //maximo +5% compara en gramos
            contadorExcesoNutrientesMacro += 1;
            indicador = 'background: rgb(228, 117, 75)';
            if (key == "proteinas_g" || key == 'grasa_total_g' || key == 'carbohidratos_g') {
                $texto += "<p>Exceso de: <b>" + UtilCambioNombreValNutricional(key) + "</b></p>";
            }

        } else if (Number(value) < Number(porcentajeMin)) { //minimo -5%  compara en gramos
            contadorDeficitNutrientesMacro += 1;
            indicador = 'background: rgb(150, 131, 131)';
            if (key == "proteinas_g" || key == 'grasa_total_g' || key == 'carbohidratos_g') {
                $texto += "<p>Déficit de: <b>" + UtilCambioNombreValNutricional(key) + "</b></p>";
            }
        }
        //en kcal los calculos

    } else { //micronutrientes
        porcentajeMax = (valMax * 110 / 100).toFixed(2);
        porcentajeMin = (valMin * 90 / 100).toFixed(2);
        if (Number(value) > Number(porcentajeMax)) { //maximo +10%  compara en gramos
            contadorExcesoNutrientesMicro += 1;
            indicador = 'background: rgb(228, 117, 75)';
        } else if (Number(value) < Number(porcentajeMin)) { //minimo -10% compara en gramos
            contadorDeficitNutrientesMicro += 1;
            indicador = 'background: rgb(150, 131, 131)';
        }


    }

    retorno[0] = '<td class="span3" id="valorApreciacion' + key + '">' + porcentajeMin + " - " + porcentajeMax + '</td>';
    retorno[1] = porcentajeMax;
    return   retorno;

}

/**
 * Busca los valores nutricionales de un alimento segun su id y los coloca en el modal
 * @author Mauricio Chamorro <mrchamorro@utn.edu.ec>
 * @param {int} id
 * @returns {undefined}
 */
function busquedaValoresNutri(id) {
    verCargandoDatosModal();
    url = '/index.php/../../nutricion/alimentos/buscarValNutricional';
    $.getJSON(baseUrl + url + "/idAlimento/" + id, function(info) {
    })
            .done(function(info) {

                tableBody = '';
                $('#cuerpoTable').children('tr').remove();
                $.each(info, function(key, value) {
                    if (key == "nombreAlimento") {
                        $('#nombreAlimento').html('');
                        $('#nombreAlimento').append(value);
                    } else {
                        if (key == "proteinas_g" || key == 'carbohidratos_g') {
                            tableBody += '<tr> <td>' + UtilCambioNombreValNutricional(key) + UtilGetUnidadMedidaValNutricional(key) + '</td> <td>' + (value * 4).toFixed(2) + '</td></tr>';
                        } else if (key == 'grasa_total_g' || key == "acidos_grasos_saturados_g" || key == "acidos_grasos_poliinsaturad_g" ||
                                key == "acidos_grasos_monoinsat_g") {
                            tableBody += '<tr> <td>' + UtilCambioNombreValNutricional(key) + UtilGetUnidadMedidaValNutricional(key) + '</td> <td>' + (value * 9).toFixed(2) + '</td></tr>';
                        } else {
                            tableBody += '<tr> <td>' + UtilCambioNombreValNutricional(key) + UtilGetUnidadMedidaValNutricional(key) + '</td> <td>' + value + '</td></tr>';
                        }
                    }
                });
                $('#cuerpoTable').append(tableBody);
                cerrarCargandoDatosModal();
            });
}

/**
 * Valida para que los macronutrientes esten dentro del rango predefinido por el sistema
 * @returns {Boolean}
 */
function modoRestrictivo() {
    if ($('#modoRestrictivo').is(':checked')) {
        return true;
    } else {
        return false;
    }
}

/**
 *Controla que se seleccione un tiempo de comida y una edad, si estas cambian los alimentos se borraran para que no exista incoherencias
 * @returns {undefined}
 */
function validadorTiempoComidaEdad() {

    $('#CartaAlimentos_tipoCarta').on('change', function() {
        $("#btnSaveCartaAlimentos").attr('disabled', true);
        tipoVariante = $(this).val();
        $('#cuerpoTableSeleccionado tr').remove();
        //crea el dropdown para el tiempo de comida
        cargarVariantesMenu();
        //carga los rangos de nutrientes segun el tiempo de comida y la edad
        cargarRangoNutrientes(tipoVariante);
    });
    $('#CartaAlimentos_edades_id').on('change', function() {
        $("#btnSaveCartaAlimentos").attr('disabled', true);
        tipoVariante = $('#CartaAlimentos_tipoCarta').val();
        $('#cuerpoTableSeleccionado tr').remove();
        //crea el dropdown para el tiempo de comida
        cargarVariantesMenu();
//carga los rangos de nutrientes segun el tiempo de comida y la edad
        cargarRangoNutrientes(tipoVariante);
    });
}
